Lightweight framework for web applications

ABSTRACT

Various technologies described herein pertain to developing a web application using a scripting language-based framework. A call can be received via an interface of the scripting language-based framework. The call can manage a control included in the scripting language-based framework. Further, the call can be provided by an application that references the scripting language based framework. Moreover, a user interface can be generated based on the control managed by the call, and backend cloud-based services provided by a distributed data store on a cloud platform can be accessed based on the control managed by the call.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation of U.S. patent application Ser. No.13/323,198, filed on Dec. 12, 2011, and entitled “LIGHTWEIGHT FRAMEWORKFOR WEB APPLICATIONS”, the entirety of which is incorporated herein byreference.

BACKGROUND

A web application is an application that can be accessed over a networksuch as the Internet. A web application can be coded in abrowser-supported language (e.g., scripting language combined withmarkup language) that can be accessed and used through a client-side webbrowser or another application on a client device (e.g., mobileapplication, desktop application, etc.). Web applications have becomeincreasingly popular due to ubiquity of web browsers and convenience ofusing web browsers as clients. Moreover, the popularity of webapplications has led to growth of centralized application marketplaces.

Recently, cloud computing has become more pervasive. Accordingly, webapplications can be built on a cloud platform, where the webapplications can run in the cloud and/or use backend services providedby the cloud. Conventional development of an application built on acloud platform commonly involves a web programmer having anunderstanding of various cloud platform specific information (e.g.,protocols, data structures, etc.) in order to read data from the cloud,write data to the cloud, use other backend services, and the like. Inaddition to such complexity associated with developing an application ona cloud platform, conventional development oftentimes can be timeconsuming. With the growth of the centralized application marketplaces,web programmers are increasingly looking for ways to write powerfulapplications in less time that work across mobile devices and webbrowsers.

SUMMARY

Described herein are various technologies that pertain to developing aweb application using a scripting language-based framework. An interfaceof the scripting language-based framework can be exposed. Moreover, acall can be received via the interface of the scripting language-basedframework. The call can manage a control included in the scriptinglanguage-based framework. Further, the call can be provided by anapplication that references the scripting language based framework.Moreover, a user interface can be generated based on the control managedby the call, and backend cloud-based services provided by a distributeddata store on a cloud platform can be accessed based on the controlmanaged by the call.

The scripting language-based framework can include a set of controlsthat are pre-programmed to access the backend cloud-based services andgenerate user interfaces when enabled. According to an example, anapplication can be developed that provides calls to enable, disable, setvalues of properties of, etc. one or more of the controls included inthe scripting language-based framework. For instance, the calls can begenerated from scripting language code included in the application.Thus, an application can be developed that employs functionalityincorporated into the scripting language-based framework (e.g., bymanaging the set of controls) rather than by including custom code inthe application to perform such functionality.

In various embodiments, the backend cloud-based services provided by thedistributed data store on the cloud platform can include one or more ofwriting data to the distributed data store, reading data from thedistributed data store, searching for data retained in the distributeddata store, indexing data in the distributed data store, and so forth.Additionally or alternatively, one or more third party services can beaccessible via the distributed data store on the cloud platform and/ordirectly from the scripting language-based framework.

The above summary presents a simplified summary in order to provide abasic understanding of some aspects of the systems and/or methodsdiscussed herein. This summary is not an extensive overview of thesystems and/or methods discussed herein. It is not intended to identifykey/critical elements or to delineate the scope of such systems and/ormethods. Its sole purpose is to present some concepts in a simplifiedform as a prelude to the more detailed description that is presentedlater.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a functional block diagram of an exemplary systemthat facilitates developing web applications.

FIG. 2 illustrates a functional block diagram of an exemplary systemthat facilitates developing web applications that employ third partyservices.

FIG. 3 illustrates a functional block diagram of an exemplary system fordeveloping an application using a scripting language-based framework.

FIG. 4 is a flow diagram that illustrates an exemplary methodology fordeveloping a web application.

FIG. 5 is a flow diagram that illustrates another exemplary methodologyfor developing a web application.

FIG. 6 illustrates an exemplary computing device.

DETAILED DESCRIPTION

Various technologies pertaining to developing web applications using alightweight, client-side framework are now described with reference tothe drawings, wherein like reference numerals are used to refer to likeelements throughout. In the following description, for purposes ofexplanation, numerous specific details are set forth in order to providea thorough understanding of one or more aspects. It may be evident,however, that such aspect(s) may be practiced without these specificdetails. In other instances, well-known structures and devices are shownin block diagram form in order to facilitate describing one or moreaspects. Further, it is to be understood that functionality that isdescribed as being carried out by certain system components may beperformed by multiple components. Similarly, for instance, a componentmay be configured to perform functionality that is described as beingcarried out by multiple components.

Moreover, the term “or” is intended to mean an inclusive “or” ratherthan an exclusive “or.” That is, unless specified otherwise, or clearfrom the context, the phrase “X employs A or B” is intended to mean anyof the natural inclusive permutations. That is, the phrase “X employs Aor B” is satisfied by any of the following instances: X employs A; Xemploys B; or X employs both A and B. In addition, the articles “a” and“an” as used in this application and the appended claims shouldgenerally be construed to mean “one or more” unless specified otherwiseor clear from the context to be directed to a singular form.

As set forth herein, a lightweight framework can facilitate rapid webapplication development by a web programmer. The lightweight frameworkdescribed herein can be a scripting language-based framework. Moreover,the lightweight framework can enable device-compatible user interfacecreation and access to data retained in a distributed data store on acloud platform and/or backend cloud-based services provided by oravailable via the distributed data store on the cloud platform. Incontrast, conventional frameworks used for web application developmentoftentimes support user interface creation without supporting dataaccess. Accordingly, in conventional web application development, a webprogrammer oftentimes needs to have knowledge of cloud technologies,data structures, protocols, and so forth to develop a web applicationthat reads data from the cloud, writes data to the cloud, or employsother backend cloud-based services.

Referring now to the drawings, FIG. 1 illustrates a system 100 thatfacilitates developing web applications. The system 100 includes ascripting language-based framework 102, which, in an exemplaryembodiment, is a client-side framework. For instance, the scriptinglanguage-based framework 102 can be a feature-rich, lightweightframework. Moreover, the scripting language-based framework 102 cansupport development of web applications by mitigating overheadassociated with common activities performed during applicationdevelopment. Thus, a web programmer need not perform such commonactivities during application development since functionality associatedwith these activities can be incorporated into the scriptinglanguage-based framework 102, and instead, the web programmer can createan application that uses the functionality supplied by the scriptinglanguage-based framework 102.

Developing a web application typically involves building a set of userinterfaces and building data access to a backend system (and/or buildingthe backend system). The user interfaces can collect various forms ofinput from a user and can process the input to conform to specificationsof the backend system. Moreover, the user interfaces can present anoutput to a user. The scripting language-based framework 102 simplifiesdevelopment of a web application by allowing a web programmer to manageboth data access to the backend system and creation of user interfaceswith basic scripting language code and/or markup language code. Forexample, the scripting language can be JavaScript®. An example of themarkup language can be HTML. It is to be appreciated, however, that theclaimed subject matter is not limited to the foregoing examples.

The scripting language-based framework 102 includes a data accesscomponent 104 and a user interface (UI) creation component 106. The dataaccess component 104 integrates with a cloud-based backend system. Inparticular, the data access component 104 can access backend cloud-basedservices provided by a distributed data store 108 on a cloud platform110. For example, the data access component 104 can read data from thedistributed data store 108, write data to the distributed data store108, employ third party backend cloud-based service(s) abstracted by thedistributed data store 108, and so forth. The data access component 104can be designed to automatically use the distributed data store 108;thus, a web application developed by a web programmer can automaticallyuse the distributed data store 108 without the web programmer needing tointegrate access to backend cloud-based services provided by thedistributed data store 108.

Moreover, the UI creation component 106 can generate a set of userinterfaces. The UI creation component 106 can generate user interfacesthat can collect various forms of input from a user and can process theinput to conform to specifications of the backend system. Further, theUI creation component 106 can generate user interfaces that can presentan output to a user.

Further, the scripting language-based framework 102 includes a set ofcontrols 112. According to an example, the scripting language-basedframework 102 can include one or more scripting language libraries thatinclude the controls 112. The controls 112 can be utilized by the UIcreation component 106 to create user interfaces and the data accesscomponent 104 to access backend cloud-based services provided by thedistributed data store 108 on the cloud platform 110. According to anillustration, when a given control from the controls 112 is enabled, theUI creation component 106 can generate a user interface based on thegiven control and the data access component can access backendcloud-based services provided by the distributed data store 108 on thecloud platform 110 based on the given control. Thus, the given controlcan be utilized by the web programmer as opposed to the web programmerwriting custom code to provide the functionality of the given control.

The scripting language-based framework 102 can further include aninterface component 114. The interface component 114 can be a scriptinglanguage interface for an application 116 (e.g., a web application),where the application 116 can include scripting language code and/ormarkup language code. The application 116 can reference the scriptinglanguage-based framework 102 via the interface component 114 to employfunctionality incorporated into the scripting language-based framework102. Moreover, the application 116 can provide call(s) to the scriptinglanguage-based framework 102 via the interface component 114. Forinstance, the call(s) can manage one or more of the controls 112 (e.g.,a call can manage a control from the controls 112). According to anexample, a call can be generated from scripting language code includedin the application 116; thus, the application 116 can include scriptinglanguage code that can generate one or more calls that manage one ormore of the controls 112, where the one or more calls can be provided tothe scripting language-based framework 102 via the interface component114.

The controls 112 in the scripting language-based framework 102 can beenabled or disabled based upon the scripting language code included inthe application 116 (e.g., in response to the call(s) provided by theapplication 116 via the interface component 114). Moreover, the controls112 can have properties and effects that can be managed by the scriptinglanguage code in the application 116 (e.g., in response to the call(s)provided by the application 116 via the interface component 114).According to an example, one or more of the controls 112 can bedynamically stylized based on the scripting language code in theapplication 116. By way of another example, one or more of the controls112 can have a range of properties that can be set in response to thescripting language code in the application 116.

The scripting language-based framework 102 can be used by a webprogrammer when developing the application 116. The scriptinglanguage-based framework 102 provides functionality related to dataaccess (e.g., via the data access component 104) and user interfacegeneration (e.g., via the UI creation component 106). Accordingly, useof the scripting language-based framework 102 can reduce an amount oftime spent by a web programmer when developing the application 116.Thus, the scripting language-based framework 102 can improve an abilityof the web programmer of the application 116 to manage data access anduser interface creation using scripting language code and/or markuplanguage code.

The data access component 104 can directly access the distributed datastore 108 on the cloud platform 110. Accordingly, the web programmer cangenerate the application 116 to read from and/or write to thedistributed data store 108 using simple scripting language code and/ormarkup language code. The web programmer can create the application 116without having knowledge of cloud technologies, data structures,protocols, and the like. Rather, the application 116 can manage (e.g.,enable, disable, set a value of a property or effect, stylize, etc.) oneor more of the controls 112; based on the one or more of the controls112 as managed by the application 116, the data access component 104 candirectly access the distributed data store 108 on the cloud platform110.

The distributed data store 108 is built on the cloud platform 110. Thedistributed data store 108 can be a fully scalable, replicated datastore on the cloud platform 110. In an exemplary embodiment, thedistributed data store 108 can be a NoSQL store. Further, thedistributed data store 108 can be built on a search component 118 and anindex component 120. The search component 118 can be a search enginethat provides full text and/or image search. The cloud platform 110 canalso provide other backend services in addition to or instead of thesearch component 118 and the index component 120. Thus, according to anexample, the data access component 104 can search for data in thedistributed data store 108 using the search component 118, index data inthe distributed data store 108 using the index component 120, and soforth.

The distributed data store 108 on the cloud platform 110 is exposedthrough a set of application programming interfaces (APIs) 122. The APIs122 can be RESTful (representational state transfer) APIs. Moreover, theAPIs 122 can be integrated into the scripting language-based framework102. For example, the data access component 104 can employ the APIs 122to access the distributed data store 108. Accordingly, the scriptinglanguage-based framework 102 can abstract the APIs 122 such that a webprogrammer need not learn how to utilize the APIs 122. Rather, theinterface component 114 can expose a simple scripting language interfacethat can be employed by the web programmer for developing theapplication 116. By way of example, the controls 112 available in thescripting language-based framework 102 can be exposed via the interfacecomponent 114.

Moreover, a set of third party services can be integrated into thedistributed data store 108: namely, a third party service 1 124, . . . ,and a third party service N 126, where N can be substantially anyinteger (collectively referred to herein as third party services124-126). Accordingly, the distributed data store 108 can provide accessto APIs of the third party services 124-126. Hence, the data accesscomponent 104 can access the third party services 124-126 (e.g., thirdparty backend cloud-based services) via the distributed data store 108on the cloud platform 110. Examples of the third party services 124-126can include a web search service, an image search service, a videosearch service, a social networking service, a microblogging service, amapping service, a semi-structured database search service, anauthentication service, a cloud platform service, and so forth. It is tobe appreciated, however, that the claimed subject matter is not limitedto the foregoing examples of the third party services 124-126, andrather, any third party service is intended to fall within the scope ofthe hereto appended claims.

Further, upon completion of development, the application 116 can beuploaded to a web hosting service (not shown). Since the application 116can be written in scripting language code and/or markup language code,the application 116 can be embedded or uploaded to substantially anywebsite, for example. Upon being made available, the application 116 canbe retrieved and loaded onto a web browser of a client device (notshown) for execution. Further, the application 116 can be client deviceagnostic such that it can work across modern desktop, laptop, and mobilebrowsers.

The following illustration demonstrates a conventional approach fordeveloping an application that maintains an address book in acloud-based data store. A web programmer can initially define dataobjects and relationships between the data objects (e.g., people,organizations to which people belong, etc.). Thereafter, the webprogrammer can build a set of user interfaces. According to an example,the web programmer can build a user interface to create a contact, auser interface to associate the contact with other contacts, a userinterface to update a contact, a user interface to delete a contact, auser interface to search over contacts, and so forth. Upon developingthe user interfaces and defining the data objects, the web programmercan build a set of backend services (e.g., backend cloud-based services)and/or build a system that accesses a set of backend services. Examplesof the backend services can include a service to write data to thecloud-based data store, a service to read data from the cloud-based datastore, a service to search over the data retained in the cloud-baseddata store, a service to edit data in the cloud-based data store, aservice to delete data from the cloud-based data store, and so forth.The foregoing approach can be time consuming for the web programmer.Moreover, such development can involve significant understanding ofvarious protocols, data structures, and so forth.

In contrast, the scripting language-based framework 102 is integratedwith the distributed data store 108 on the cloud platform 110. Moreover,the scripting language-based framework 102 includes the set of controls112 that can be managed as a function of the scripting language codeincluded in the application 116. Further, the controls 112 can bepre-programmed within the scripting language-based framework 102 toaccess the cloud-based backend system (e.g., the distributed data store108 on the cloud platform 110). Thus, instead of the web programmerhaving to perform a range of backend programming as well as userinterface development, the web programmer can write scripting languagecode and/or markup language code to manage the controls 112 of thescripting language-based framework 102, which are integrated into therich backend of the distributed data store 108 on the cloud platform110.

Now referring to FIG. 2, illustrated is a system 200 that facilitatesdeveloping web applications that employ third party services. The system200 includes the scripting language-based framework 102, which canfurther comprise the data access component 104, the UI creationcomponent 106, the set of controls 112, and the interface component 114.As described above, the data access component 104 can directly accessthe distributed data store 108 on the cloud platform 110 via the APIs122.

Moreover, one or more third party services can be directly integratedinto the scripting language-based framework 102. Thus, APIs of a thirdparty service 1 202, . . . , and a third party service M 204(collectively referred to herein as third party services 202-204) can beexposed to the data access component 104 of the scripting language-basedframework 102, where M can be substantially any integer. The scriptinglanguage-based framework 102 can abstract the APIs of the third partyservices 202-204. Accordingly, the application 116 can include scriptinglanguage code that manages one or more of the controls 112, where thecontrols 112 can cause the data access component 104 to employ one ormore of the third party services 202-204 without the web programmer ofthe application 116 needing to have knowledge of the data structures,protocols, etc. for the APIs of the one or more third party services202-204. Thus, the web programmer need not write code that accesses theone or more third party services 202-204 when developing the application116 as such integration is incorporated into the scriptinglanguage-based framework 102.

Examples of the third party services 202-204 can include a web searchservice, an image search service, a video search service, a socialnetworking service, a microblogging service, a mapping service, asemi-structured database search service, an authentication service, acloud platform service, and so forth. Yet, the claimed subject matter isnot limited to the foregoing examples of the third party services202-204. According to an example, a third party service can beintegrated into both the distributed data store 108 and the data accesscomponent 104 (e.g., the third party service can be one of the thirdparty services 124-126 and one of the third party services 202-204).Additionally or alternatively, a third party service can be integratedinto either the distributed data store 108 or the data access component104 (e.g., the third party service can be one of the third partyservices 124-126 or one of the third party services 202-204).

By way of example, when an Internet Protocol (IP) address of a clientdevice (e.g., a device executing the application 116) is to be providedto a third party service (e.g., to return content relevant to the IPaddress), a control (e.g., from the controls 112) can cause the dataaccess component 104 to directly supply the IP address to the thirdparty service rather than indirectly passing the IP address to the thirdparty service. Thus, the data access component 104 can send the IPaddress to one or more of the third party services 202-204 directlyintegrated there with rather than sending the IP address to one or moreof the third party services 124-126 accessible via the distributed datastore 108 on the cloud platform 110.

Now turning to FIG. 3, illustrated is a system 300 for developing theapplication 116 using the scripting language-based framework 102. Thescripting language-based framework 102 includes the data accesscomponent 104 that can access cloud-based backend system(s) (e.g., thedistributed data store 108 on the cloud platform 110 of FIG. 1, thethird party services 202-204 of FIG. 2, etc.), the UI creation component106 that generates user interfaces, and the interface component 114 thatcan interface with the application 116.

Moreover, the scripting language-based framework 102 includes thecontrols 112. The controls 112 can be based on the model-view-controller(MVC) model, for example. The controls 112 can be enabled or disabled asa function of the scripting language code included in the application116. For instance, when one or more of the controls 112 are enabled inthe application 116, the enabled control(s) 112 can cause the UIcreation component 106 to generate user interface(s). Further, thecontrols 112 can have a range of properties and effects that can beapplied to them. According to an illustration, one or more of thecontrols 112 can be stylized based on the scripting language codeincluded in the application 116. For example, one or more of thecontrols 112 can be managed by the application 116 to cause the UIcreation component 106 to animate user interface(s) rendered on adisplay of a client device. Possible animations can be incorporated intothe controls 112 included in the scripting language-based framework 102.Pursuant to a further example, the controls 112 included in thescripting language-based framework 102 can have dependencies on eachother; following this example, the dependencies between the controls 112can allow the UI creation component 106 to provide for rich animation ingenerated user interface(s). By way of another example, the controls 112may have a number of properties such as, for instance, a name, title,and so forth.

Pursuant to an example, one or more of the controls 112 can manageauthentication for the application 116. For example, the application 116can include scripting language code that chooses an authenticationscheme from a set of available authentication schemes (e.g., provided bydifferent third party services). Thereafter, the selected authenticationscheme can be employed across the system from the backend (e.g., thedistributed data store 108 on the cloud platform 110 of FIG. 1) tothrough the frontend.

Further, the UI creation component 106 can include a tailoring component302 that can detect capabilities of client device on which theapplication 116 is running and modify user interfaces generated based onone or more of the controls 112 as a function of the detectedcapabilities. For example, if the application 116 is loaded on asmartphone, the tailoring component 302 can detect that the clientdevice includes a camera and a microphone. Following this example, thetailoring component 302 can modify the user interfaces generated by theUI creation component 106 based on the one or more of the controls 112to include features related to the camera and microphone of thesmartphone, whereas such features can be omitted in the user interfacesgenerated by the UI creation component 106 when the tailoring component302 detects that a client device lacks a camera and a microphone. Byincluding the tailoring component 302, the scripting language-basedframework 102 can enable the application 116 to employ capabilities of aclient device on which the application 116 is executing. Moreover, theapplication 116 can work across mobile devices, desktops, laptops, etc.by utilizing the tailoring component 302 incorporated in the scriptinglanguage-based framework 102 without coding by the web programmer tosupport the various types of devices.

The UI creation component 106 can further include a flighting component304 that can rollout features of the application 116 in phases. Forinstance, a web programmer can desire that a certain subset of usershave access to a feature of the application 116. Thus, the flightingcomponent 304 can provide the feature of the application 116 in userinterface(s) generated for the subset of users while hiding the featurein user interface(s) generated for the remainder of the users of theapplication 116. By including the flighting component 304 in thescripting language-based framework 102, custom code to enable staggeredrollout of features of the application 116 need not be written by a webprogrammer.

Moreover, the scripting language-based framework 102 can include anotification component 306 that receives notifications from and sendsnotifications to the controls 112. Thus, in the scripting language-basedframework 102, the notification component 306 can exchange informationbetween the controls 112, which can allow for having dependenciesbetween the controls 112. According to an illustration, the application116 can be a scripting language shell, which can include scriptinglanguage code that generates calls to a plurality of the controls 112.Following this illustration, the plurality of the controls 112 calledwithin the application 116 can receive shell-wide notifications from thenotification component 306, thereby facilitating interaction between theplurality of controls 112.

For example, two controls (e.g., from the controls 112) can be includedon a webpage; one control can be a list view of names and the othercontrol can be a detailed view, for instance. Following this example,the two controls can exchange information via the notification component306. Thus, for instance, if a name is selected (e.g., clicked on) in thelist view, then the detailed view can show details corresponding to thename selected in the list view. Moreover, the notification component 306can exchange information used by the controls 112 to effectuate eventchaining Accordingly, behaviors of the controls 112 can be chained basedon events (e.g., loading data, processing a transaction, completion ofan animation, received user input, etc.).

Further, the data access component 104 can include a source bindingcomponent 308 that can bind controls 112 to data sources (e.g.,cloud-based backend system(s)). According to an example, the sourcebinding component 308 can bind two of the controls 112 to objects fromdifferent sources. Pursuant to this example, the source bindingcomponent 308 can bind one of the controls 112 to objects from a firstsocial networking service, and the other one of the controls 112 toobjects from a second social network service; yet, it is to beappreciated that the claimed subject matter is not limited to theforegoing example. Since the source binding component 308 can bindcontrols 112 to different data sources, the data access component 104can employ a normalized schema for information from the various datasources. Such normalization of the schema can allow for flexibleexchange of information between the controls 112. In variousembodiments, the source binding component 308 can bind one or more ofthe controls 112 to an open data protocol (ODdata) source; however, itis to be appreciated that the claimed subject matter is not so limited.

FIGS. 4-5 illustrate exemplary methodologies relating to developing webapplications using a scripting language-based framework. While themethodologies are shown and described as being a series of acts that areperformed in a sequence, it is to be understood and appreciated that themethodologies are not limited by the order of the sequence. For example,some acts can occur in a different order than what is described herein.In addition, an act can occur concurrently with another act. Further, insome instances, not all acts may be required to implement a methodologydescribed herein.

Moreover, the acts described herein may be computer-executableinstructions that can be implemented by one or more processors and/orstored on a computer-readable medium or media. The computer-executableinstructions can include a routine, a sub-routine, programs, a thread ofexecution, and/or the like. Still further, results of acts of themethodologies can be stored in a computer-readable medium, displayed ona display device, and/or the like.

FIG. 4 illustrates a methodology 400 for developing a web application.At 402, an interface for a scripting language-based framework can beexposed. At 404, a call can be received via the interface. The callreceived via the interface can manage a control included in thescripting language-based framework. Further, the call can be provided byan application that references the scripting language-based framework.For example, the call can enable the control, disable the control, set aproperty or effect of the control, and so forth. At 406, a userinterface can be generated based on the control as managed by the call.At 408, backend cloud-based services provided by a distributed datastore on a cloud platform can be accessed based on the control asmanaged by the call.

Now turning to FIG. 5, illustrated is a methodology 500 for developing aweb application. At 502, an interface for a scripting language-basedframework that includes a set of controls pre-programmed to accessbackend cloud-based services and generate user interfaces when enabledcan be exposed. At 504, a call that enables a control from the set ofcontrols included in the scripting language-based framework can bereceived via the interface. The call can be provided by an applicationthat references the scripting language-based framework. At 506, a userinterface can be generated based on the control enabled by the call. At508, the backend cloud-based services provided by a distributed datastore on a cloud platform can be accessed based on the control enabledby the call.

Referring now to FIG. 6, a high-level illustration of an exemplarycomputing device 600 that can be used in accordance with the systems andmethodologies disclosed herein is illustrated. For instance, thecomputing device 600 may be used in a system that develops a webapplication using a scripting language-based framework. By way ofanother example, the computing device 600 may be used in a system thatexecutes a web application built upon a scripting language-basedframework. The computing device 600 includes at least one processor 602that executes instructions that are stored in a memory 604. Theinstructions may be, for instance, instructions for implementingfunctionality described as being carried out by one or more componentsdiscussed above or instructions for implementing one or more of themethods described above. The processor 602 may access the memory 604 byway of a system bus 606. In addition to storing executable instructions,the memory 604 may also store an application, a scripting language-basedframework, and so forth.

The computing device 600 additionally includes a data store 608 that isaccessible by the processor 602 by way of the system bus 606. The datastore 608 may include executable instructions, an application, ascripting language-based framework, etc. The computing device 600 alsoincludes an input interface 610 that allows external devices tocommunicate with the computing device 600. For instance, the inputinterface 610 may be used to receive instructions from an externalcomputer device, from a user, etc. The computing device 600 alsoincludes an output interface 612 that interfaces the computing device600 with one or more external devices. For example, the computing device600 may display text, images, etc. by way of the output interface 612.

Additionally, while illustrated as a single system, it is to beunderstood that the computing device 600 may be a distributed system.Thus, for instance, several devices may be in communication by way of anetwork connection and may collectively perform tasks described as beingperformed by the computing device 600.

As used herein, the terms “component” and “system” are intended toencompass computer-readable data storage that is configured withcomputer-executable instructions that cause certain functionality to beperformed when executed by a processor. The computer-executableinstructions may include a routine, a function, or the like. It is alsoto be understood that a component or system may be localized on a singledevice or distributed across several devices.

Further, as used herein, the term “exemplary” is intended to mean“serving as an illustration or example of something.”

Various functions described herein can be implemented in hardware,software, or any combination thereof. If implemented in software, thefunctions can be stored on or transmitted over as one or moreinstructions or code on a computer-readable medium. Computer-readablemedia includes computer-readable storage media. A computer-readablestorage media can be any available storage media that can be accessed bya computer. By way of example, and not limitation, suchcomputer-readable storage media can comprise RAM, ROM, EEPROM, CD-ROM orother optical disk storage, magnetic disk storage or other magneticstorage devices, or any other medium that can be used to carry or storedesired program code in the form of instructions or data structures andthat can be accessed by a computer. Disk and disc, as used herein,include compact disc (CD), laser disc, optical disc, digital versatiledisc (DVD), floppy disk, and blu-ray disc (BD), where disks usuallyreproduce data magnetically and discs usually reproduce data opticallywith lasers. Further, a propagated signal is not included within thescope of computer-readable storage media. Computer-readable media alsoincludes communication media including any medium that facilitatestransfer of a computer program from one place to another. A connection,for instance, can be a communication medium. For example, if thesoftware is transmitted from a website, server, or other remote sourceusing a coaxial cable, fiber optic cable, twisted pair, digitalsubscriber line (DSL), or wireless technologies such as infrared, radio,and microwave, then the coaxial cable, fiber optic cable, twisted pair,DSL, or wireless technologies such as infrared, radio and microwave areincluded in the definition of communication medium. Combinations of theabove should also be included within the scope of computer-readablemedia.

What has been described above includes examples of one or moreembodiments. It is, of course, not possible to describe everyconceivable modification and alteration of the above devices ormethodologies for purposes of describing the aforementioned aspects, butone of ordinary skill in the art can recognize that many furthermodifications and permutations of various aspects are possible.Accordingly, the described aspects are intended to embrace all suchalterations, modifications, and variations that fall within the spiritand scope of the appended claims. Furthermore, to the extent that theterm “includes” is used in either the details description or the claims,such term is intended to be inclusive in a manner similar to the term“comprising” as “comprising” is interpreted when employed as atransitional word in a claim.

What is claimed is:
 1. A method, comprising: exposing a control as partof a scripting language-based framework; receiving one or more calls tothe control; managing generation of a user interface in response to theone or more calls to the control such that the user interface istailored based on detected hardware capabilities of a client device onwhich the user interface is to be displayed; and managing access to acloud-based service on a cloud platform in response to the one or morecalls to the control, wherein the control is pre-programmed to accessthe cloud-based service on the cloud platform and generate the userinterface when enabled, and wherein the one or more calls to the controlenables the control.
 2. The method of claim 1, wherein the cloud-basedservice is provided by a distributed data platform.
 3. The method ofclaim 1, wherein the scripting language-based framework is configured todetect the hardware capabilities of the client device.
 4. The method ofclaim 1, wherein managing the generation of the user interface inresponse to the one or more calls to the control further comprises:managing a property or an effect of the user interface in response tothe one or more calls to the control.
 5. The method of claim 1, whereinmanaging the generation of the user interface in response to the one ormore calls to the control further comprises: managing an animation inresponse to the one or more calls to the control.
 6. The method of claim1, wherein the one or more calls to the control manages a user interfacefeature that is hidden to a first user and visible to a second user. 7.The method of claim 1, further comprising: exposing a second control aspart of the scripting language-based framework; receiving one or morecalls to the second control; and at least one of: managing generation ofa second user interface in response to the one or more calls to thesecond control; or managing access to a second cloud-based service onthe cloud platform in response to the one or more calls to the secondcontrol.
 8. The method of claim 7, further comprising: exchanging eventinformation between the control and the second control; and chainingbehaviors managed by the control and the second control based on theevent information.
 9. The method of claim 7, wherein the second controlhas a dependency on the control.
 10. The method of claim 1, wherein thecloud-based service is at least one of a web search service, an imagesearch service, a video search service, a social networking service, amicroblogging service, a mapping service, or a semi-structured databasesearch service.
 11. The method of claim 1, wherein the user interface istailored such that a user interface feature is selectively hidden orvisible.
 12. The method of claim 1, wherein the control managesauthentication to the cloud-based service utilizing an authenticationscheme selected in response to the one or more calls to the control. 13.An apparatus, comprising: at least one processor; and memory coupled tothe at least one processor, the memory storing instructions configuredto implement a scripting language-based framework, the scriptinglanguage-based framework comprising: a control exposed as part of thescripting language-based framework, wherein the control receives one ormore calls; the control manages generation of a user interface inresponse to the one or more calls such that the user interface istailored based on detected hardware capabilities of a client device onwhich the user interface is to be displayed, wherein the scriptinglanguage-based framework is configured to detect the hardwarecapabilities of the client device; and the control accesses acloud-based service on a cloud platform in response to the one or morecalls, wherein the scripting language-based framework is pre-programmedsuch that the control of the scripting language-based framework isconfigured to access the cloud-based service on the cloud platform whenenabled, and wherein the one or more calls to the control enables thecontrol.
 14. The apparatus of claim 13, wherein the scriptinglanguage-based framework is further pre-programmed such that the controlis configured to generate the user interface when enabled.
 15. Theapparatus of claim 13, wherein the cloud-based service is at least oneof a web search service, an image search service, a video searchservice, a social networking service, a microblogging service, a mappingservice, or a semi-structured database search service.
 16. The apparatusof claim 13, wherein the control manages a property or an effect of theuser interface in response to the one or more calls.
 17. The apparatusof claim 13, wherein, responsive to the one or more calls, the controlmanages a user interface feature of the user interface that is hidden toa first user and visible to a second user.
 18. The apparatus of claim13, wherein the control manages authentication to the cloud-basedservice utilizing an authentication scheme selected in response to theone or more calls to the control.
 19. A computer-readable storage mediumincluding computer-executable instructions that, when executed by atleast one processor, cause the at least one processor to perform actsincluding: exposing a control as part of a scripting language-basedframework; receiving one or more calls to the control; managinggeneration of a user interface in response to the one or more calls tothe control such that the user interface is tailored based on detectedhardware capabilities of a client device on which the user interface isto be displayed; and managing access to a cloud-based service on a cloudplatform in response to the one or more calls to the control, whereinthe control is pre-programmed to access the cloud-based service on thecloud platform and generate the user interface when enabled, and whereinthe one or more calls to the control enables the control.
 20. Thecomputer-readable storage medium of claim 19, wherein thecomputer-executable instructions, when executed by the at least oneprocessor, further cause the at least one processor to perform actsincluding: managing access to a second cloud-based service on the cloudplatform in response to the one or more calls to the control; andmanaging generation of a second user interface in response to the one ormore calls to the control.